/*
	Di-Costanzo Jonathan
	Fauché Pierre-Élie
	3TC 3
*/

#ifndef __P2P_NETWORK
#define __P2P_NETWORK

#include "p2p_common.h"

/***************************************************************************
Suppression des structures utilisées pour la découverte de topologie
***************************************************************************/
void p2p_network_delete(server_params *sp);

/***************************************************************************
Crée le fichier de graph après un discover
***************************************************************************/
int p2p_graph_write(server_params *sp);

/***************************************************************************
Envoi d'un message P2P_NEIGHBORS_REQ
***************************************************************************/
int p2p_neighbors_req_send(server_params *sp);

/***************************************************************************
Reception d'un message P2P_NEIGHBORS_REQ, envoi d'un P2P_NEIGHBORS_LIST
***************************************************************************/
int p2p_neighbors_req_received(server_params *sp, p2p_msg msg_neigh_req);

/***************************************************************************
Reception d'un message P2P_NEIGHBORS_LIST
***************************************************************************/
int p2p_neighbors_list_received(server_params *sp, p2p_msg neigh_list_msg);

/***************************************************************************
Referme l'anneau si celui-ci est mal formé
***************************************************************************/
int p2p_cure(server_params *sp);

/***************************************************************************
Kick un noeud de l'anneau
***************************************************************************/
int p2p_kick(server_params *sp, char *adresse_kickee);

#endif
